﻿#ifndef   MY_WORLD_02_H
#define  MY_WORLD_02_H

#include "cocos2d.h"
using namespace cocos2d;

#include "GnsPolygon2.h"

#define  FISH_MAX_NUM			100
#define  BULLET_MAX_NUM		100
#define  POLYGON_POT_NUM     4

#define VERY_SLOW  0  // 1表式非常慢的帧率，0表示正常帧率

class MyWorld02 : public Layer
{
public:
	MyWorld02();
	~MyWorld02();

	#if USE_CREATE_FUNC
		/* 调用宏CREATE_FUNC定义create函数 */
		CREATE_FUNC(MyHelloWorldScene);
	#else
		static MyWorld02* create();
	#endif

	/* 通过静态的scene函数，创建一个场景对象 */
	static Scene* createScene();

	/* MyWorld02 的初始化工作都在init里执行 */
	virtual bool init();

public:
	// 检查矩阵变换
	void Test01();

	// 对 GnsPolygon2 的操作
	void Test02();

	// 计算碰撞的行为
	void addBehavior();

	virtual void update(float delta);

	void calculateCollision();

	void countTime(float dt);

	// 获得运动结果的矩阵
	void getActionResultMat4(float dt);

	// 画多边形，bDrawRed 为 true 表示画左下角的红点
	void drawProlygon(bool bDrawRed=true);

public:
	bool					_stop = false;    // 停止状态

	std::thread			_calculateCollisionThread;			// 
	std::mutex			_mutexFrameFun;			// 

private:
	
	Sprite* _fish[FISH_MAX_NUM];
	Sprite* _bullet[BULLET_MAX_NUM];

	Sprite* _smallFish;
	//Sprite* _smallBullet;

	DrawNode* _drawNode;
	DrawNode* _drawBezier;

	Vec2	_prevPos;				// 上一帧的位置
	float	_prevRotateto;		// 上一帧的旋转角度

	GnsPolygon2  polyon2;
};

#endif
